#ifndef BANKSYSTEM_HH
#define BANKSYSTEM_HH

#include <vector>
#include <memory>
#include <string>
#include "Customer.hh"
#include "ReportGenerator.hh"

class BankSystem {
private:
    std::vector<std::shared_ptr<Customer>> customers;

public:
    BankSystem();

    void registerCustomer(const std::string& name);
    std::shared_ptr<Customer> findCustomer(const std::string& name);
    void showAllCustomers() const;
    void showMainMenu();

    void generateGlobalTransactionReport() const;
    void generateCustomerReport(std::shared_ptr<Customer> customer) const;
    void generateAccountReport(Account* account) const;
};

#endif

